home *** CD-ROM | disk | FTP | other *** search
/ PC User 2003 September / Australian PC User - September 2003 (CD1).iso / magstuff / web / files / dwmx61.exe / Disk1 / data1.cab / Configuration_En / Inspectors / repeatedregion.js < prev    next >
Encoding:
JavaScript  |  2002-11-25  |  8.0 KB  |  322 lines

  1. //Copyright 2000,2001 Macromedia, Inc. All rights reserved.
  2.  
  3. var REC_SELECTED;
  4. var REC_INDEX;
  5. var NODE_INDEX;
  6. var TF_NAME;
  7. var TF_COUNT;
  8. var MENU_RS;
  9. var RB_ALL
  10. var RB_COUNT;
  11. var ARR_SS_RECS;
  12. var helpDoc = MM.HELP_inspRepeatedRegion;
  13.  
  14.  
  15.  
  16. function getTagName(dom) {
  17.   var tagName = (dom.serverModel.getServerName() == "Cold Fusion") ? "CFOUTPUT" : "MM_REPEATEDREGION";
  18.   return tagName;
  19. }
  20.  
  21.  
  22. function canInspectSelection() {
  23.   var dom = dw.getDocumentDOM();
  24.   
  25.   //get all participants of all server behaviors
  26.   var ssRecs = ARR_SS_RECS = dw.sbi.getServerBehaviors();
  27.   var nRecs = (ssRecs != null) ? ssRecs.length : 0;
  28.   if (nRecs == 0) return false;
  29.   
  30.   //get the selected node
  31.   var curSel = dom.getSelection(true);
  32.   var selectedObj = dom.offsetsToNode(curSel[0],curSel[0]);
  33.   
  34.   var foundRec = "";  
  35.     
  36.   if (dom.serverModel.getServerName() != "Cold Fusion") {
  37.     
  38.     var rrNode = getRepeatedRegion(curSel);
  39.     if (rrNode) {
  40.       for (var recInd=0; recInd < nRecs; recInd++) {
  41.         var currRec = ssRecs[recInd];
  42.         if ((currRec.type == "repeatedRegion" || currRec.type == "repeatedRegionAll") && rrNode.name == currRec.parameters.loopName) {
  43.           REC_SELECTED = foundRec = currRec;
  44.           REC_INDEX = recInd;
  45.           break;
  46.         }
  47.       }
  48.     }
  49.     
  50.   } else {
  51.  
  52.     var rrNode = getRepeatedRegion(curSel);
  53.     if (rrNode) {
  54.       for (var recInd=0; recInd < nRecs; recInd++) {
  55.         var currRec = ssRecs[recInd];
  56.         if (currRec.type == "repeatedRegion" || currRec.type == "repeatedRegionAll") {
  57.           var parts = currRec.participants;
  58.           var nParts = parts.length;
  59.           for (var partInd=0; partInd < nParts; partInd++){
  60.             if (rrNode == parts[partInd]) {
  61.               REC_SELECTED = foundRec = currRec;
  62.               REC_INDEX = recInd;
  63.               break;
  64.             }
  65.           }
  66.           if (foundRec) break;
  67.         }
  68.       }
  69.     }
  70.  
  71.   }
  72.   
  73.   return (foundRec != "");
  74.   
  75. }
  76.  
  77.  
  78.  
  79. //This function will check when all selected cells are completely contained
  80. //within the repeated region.
  81. function getRepeatedRegion(curSelection)
  82. {
  83.   var returnNode = null;
  84.   var dom = dw.getDocumentDOM();
  85.   var nodes = dom.getElementsByTagName(getTagName(dom));
  86.   
  87.   for (var index =0 ; index < nodes.length ; index++) {
  88.     
  89.     var offsets = dom.nodeToOffsets(nodes[index]);
  90.     var found = true;
  91.     for (i =0 ; i < curSelection.length ; i+=2) {
  92.       
  93.       if (curSelection[i] && curSelection[i+1]) {
  94.         
  95.         if ((offsets[0] > curSelection[i])||
  96.             (offsets[1] < curSelection[i+1])) {
  97.           found = false;
  98.           break;
  99.         }
  100.         
  101.       } else {
  102.         found = false
  103.         break
  104.       }
  105.  
  106.     }
  107.     
  108.     if (found) {      
  109.       returnNode = nodes[index];
  110.       NODE_INDEX = index;
  111.       break;
  112.     }
  113.   }
  114.   
  115.   return returnNode;
  116. }
  117.  
  118.  
  119.  
  120. function inspectSelection() {
  121.   initializeUI();
  122.   
  123.   var regionRec = REC_SELECTED;
  124.   var params = regionRec.parameters;
  125.   var recordset = params.rsName;
  126.   var loopName = params.loopName;
  127.   var nRows    = params.numRows;
  128.   var modelIsColdFusion = dw.getDocumentDOM().serverModel.getServerName() == "Cold Fusion";
  129.   var theRS = MENU_RS.inspectServerBehavior(regionRec,"");
  130.   
  131.   
  132.   if (nRows == -1 || !nRows) { // if showing all records
  133.     setRadioGroup(1);
  134.     if (modelIsColdFusion) { 
  135.       TF_NAME.value = "";
  136.       disableNameField();
  137.     } else {
  138.       TF_NAME.value = (loopName)?loopName:"";
  139.     }
  140.   } else {  // if showing only n records per set
  141.     setRadioGroup(2);
  142.     TF_COUNT.value = nRows;
  143.     if (modelIsColdFusion) {
  144.       enableNameField(); 
  145.     }
  146.     TF_NAME.value = (loopName)?loopName:"";
  147.   }
  148. }
  149.  
  150.  
  151.  
  152. function initializeUI() {
  153.   RB_ALL    = findObject("AllCount");
  154.   RB_COUNT  = findObject("NumCount"); 
  155.   TF_NAME   = findObject("LoopName");
  156.   TF_COUNT  = findObject("NumValue");
  157.   MENU_RS = new RecordsetMenu("Repeated Region.htm", "rsName");
  158.   MENU_RS.initializeUI();
  159. }
  160.  
  161.  
  162.  
  163. function updateRepeatedRegion() {
  164.   var paramType = updateRepeatedRegion.arguments[0];
  165.   var updateIsValid = true;
  166.   var regionRec = REC_SELECTED;
  167.   var modelIsColdFusion = dw.getDocumentDOM().serverModel.getServerName();
  168.   
  169.   // Sanity check: if the list of server behaviors has changed, bail.
  170.   if (ARR_SS_RECS != dw.sbi.getServerBehaviors())
  171.     return;
  172.   
  173.   // the "paramType" is an optional variable that tells which parameter
  174.   // was just changed. Do error checking relevent to the just changed parameter only.
  175.   if (paramType){
  176.     if (paramType == "regionName"){
  177.       updateIsValid = validateRegionName(TF_NAME.value);
  178.       if (!updateIsValid){ // if new name isn't valid, change to previous name
  179.         TF_NAME.value = regionRec.parameters.loopName;
  180.       }
  181.     } else if (paramType == "numRecs"){
  182.       var numRecVal = TF_COUNT.value;
  183.       if (notAnInteger(numRecVal) || numRecVal<1){
  184.         updateIsValid = false;
  185.         alert(MM.MSG_ValueGreaterThanZero);
  186.         TF_COUNT.value = regionRec.parameters.numRows;
  187.       }
  188.     }
  189.   }
  190.   
  191.   if (updateIsValid) {
  192.     var paramObj = new Object();
  193.     paramObj.rsName =  MENU_RS.getValue();
  194.     loopName = TF_NAME.value;
  195.     if ( RB_ALL.checked.toString() == "true" ) { // if showing all records
  196.       paramObj.numRows = -1;
  197.       paramObj.MM_subType = "all";
  198.       if (loopName)
  199.         paramObj.loopName = loopName;
  200.       
  201.       
  202.     } else { // if showing only n records
  203.       paramObj.numRows = TF_COUNT.value;
  204.       paramObj.loopName = (loopName)?loopName:createUniqueRepeatedRegionName();
  205.     }
  206.  
  207.  
  208.     errStr = MENU_RS.applyServerBehavior(REC_SELECTED, paramObj);
  209.  
  210.     if (!errStr) {
  211.       applySB(paramObj,REC_SELECTED,"Repeated Region.htm");
  212.       setTimeout("resetOriginalSelection()",20);
  213.     }
  214.   }
  215. }
  216.  
  217.  
  218.  
  219. // whichButton is 0 for no button clicked, 1 for the Num Records button,
  220. // 2 for the All Records button
  221. function setRadioGroup(whichButton) 
  222. {
  223.  
  224.     if (whichButton == 1) 
  225.     {
  226.       // All button was checked
  227.       RB_ALL.checked     = true;
  228.       RB_COUNT.checked   = false;
  229.       TF_COUNT.setAttribute("disabled","true");
  230.       
  231.     } 
  232.     else if (whichButton == 2) 
  233.     {
  234.       // Count button was checked
  235.       RB_COUNT.checked  = true; 
  236.       RB_ALL.checked    = false;
  237.       TF_COUNT.setAttribute("disabled","false")
  238.  
  239.       if (  TF_COUNT.value == "" || (parseInt(TF_COUNT.value) != TF_COUNT.value)  ) {
  240.         TF_COUNT.value = 10;
  241.       }      
  242.     }
  243. }
  244.  
  245.  
  246.  
  247. function resetOriginalSelection() {
  248.   var dom = dw.getDocumentDOM();
  249.   if (dom) {
  250.     var nodes = dom.getElementsByTagName(getTagName(dom));
  251.     if (nodes[NODE_INDEX]) {
  252.       dom.setSelectedNode(nodes[NODE_INDEX]);
  253.     }
  254.   }
  255. }
  256.  
  257.  
  258.  
  259. function validateRegionName(regionName){
  260.   var isValid = true;
  261.   var errMsg = "";
  262.   
  263.   // return true if name has not changed
  264.   if (regionName == REC_SELECTED.parameters.loopName) {
  265.     return isValid;
  266.   }
  267.   
  268.   if (regionName == ""){
  269.     errMsg = MM.MSG_MissingRepeatName;
  270.   } else if (!IsValidVarName(regionName)) {
  271.     errMsg = MM.MSG_InvalidRepeatName;
  272.   } else if (isDuplicateRegionName(regionName)) {
  273.     errMsg = MM.MSG_DuplicateRR;
  274.   }
  275.   
  276.   if (errMsg){
  277.     alert (errMsg);
  278.     isValid = false; 
  279.   }
  280.   
  281.   return isValid;
  282.   
  283. }
  284.  
  285.  
  286.  
  287. function isDuplicateRegionName(regionName) {
  288.   var isDupe = false;
  289.   var ssRecs = ARR_SS_RECS;
  290.   var currRec = REC_SELECTED;
  291.   var nRecs = ssRecs.length, i, currRec;
  292.   
  293.   for (i=0;i<nRecs;i++) {
  294.     currRec = ssRecs[i];
  295.     if (currRec.type && (currRec.type == "repeatedRegion" || currRec.type == "repeatedRegionAll") &&
  296.         currRec.parameters.loopName == regionName && currRec != REC_SELECTED) {
  297.            isDupe = true;
  298.            break;
  299.     }
  300.   }
  301.   
  302.   return isDupe;
  303.   
  304. }
  305.  
  306.  
  307. function notAnInteger(val){
  308.   return (val != parseInt(val));
  309. }
  310.  
  311.  
  312. function enableNameField(){
  313.   if (TF_NAME.disabled)
  314.     TF_NAME.removeAttribute("disabled");
  315. }
  316.  
  317.  
  318. function disableNameField(){
  319.   if (!TF_NAME.disabled)
  320.     TF_NAME.setAttribute("disabled","true");
  321. }
  322.